The present invention relates to the translation of data from one format to another. In particular, the present invention relates to the efficient routing of data for translation.
Data translation is a common technique for converting data from one format to another so that it is better suited for a particular use. Examples of translations include encryption, compression and encoding. Encryption is typically used to secure data so that unauthorized users cannot access the data. Compression is used to reduce the number of bytes in the data by, for example, removing redundant bytes. Encoding is used to convert data from one set of representations to another set to overcome restrictions placed on the character set by a transmission channel. For example, encoding is used to convert 8-bit binary values into 7-bit ASCII values for transmission over channels that cannot handle 8-bit data.
In many applications, it is desirable to perform multiple translations on a single piece of data. Thus, data may be encrypted, encoded, and then compressed before being sent across a channel extending between two locations. With multiple translations, the system attempting to recover the data from the channel must be able to determine the types of translations that were performed on the data, and the order in which the translations were performed. Once the recovery system has this information, it can reverse the translations to recover the original data.
The simplest method for providing translation information to a recovery system is to use a fixed set of translations that are programmed into the recovery system. In this type of system, every piece of data is translated using the same set of translations in the same order. This method minimizes the amount of translation information that must be passed across the channel but lacks the flexibility that would allow translations to be selected dynamically as data or applications require.
In an alternative method, each translator on the production side creates a translation header that is attached to the translated data produced by the translator. Thus, an encryption translator attaches an encryption header to the encrypted data it produces, and a compression translator attaches a compression header to the compressed data it produces.
In this alternative method, each translator creates its header without reference to earlier translations. In fact, each translator treats existing headers that accompany the data as a portion of the data. Thus, if a piece of data is encrypted and then compressed, the compression translator will compress the encryption header in the same manner that it compresses the encrypted data. This obscures the encryption header in the compressed data so that it is not apparent to the recovery system that the data has been encrypted simply by looking at the compressed data or the compression header.
Since earlier headers are obscured by later translations, the recovery system is only able to identify the last translation performed on a piece of data it receives from the channel. Thus, the recovery system cannot determine from the channel data if it has all of the translation tools necessary to recover the original message. As such, it must begin to translate the data with the hope that it will have all of the necessary tools. If after performing a number of translations on the data, the recovery system encounters a translation it cannot handle, the recovery system must reject the data. If this occurs, any earlier translations performed by the recovery system needlessly wasted computer resources. For wireless devices, such as handheld computers, the wasting of computer resources reduces the performance of the device by drawing power and computing time away from other processes.
A recovery system is capable of recovering a core set of data from an input set of data. The input set of data is accompanied by a translator identifier and both items are received by a receiver in the recovery system. The receiver passes the data to a message router that is capable of accessing a tag list based on the translator identifier before the recovery system has translated the input set of data. The message router is also capable of routing data based on the accessed tag list.
In some embodiments of the present invention, the receiver is a driver, which is part of a wireless system. The driver is able to reject the input set of data if the recovery system does not include a translator required to recover the core set of data. In further embodiments, the driver is capable of rejecting the input set of data before the message router has accessed the tag list. Thus, in wireless devices, these embodiments of the invention do not xe2x80x9cwake-upxe2x80x9d the device unless the device has all of the needed translators.
One embodiment of the invention uses macro-tags, which represent multiple translations. Based upon applications on the recovery system, translators available on the recovery system, or a macro-tag table, at least one translator on the recovery system is able to expand a macro-tag into a series of tag values.
In one embodiment of the invention, the tag list is simply assigned by the receiver based on the address on which the message was received. In such embodiments, tags do not need to be sent with the data, reducing the overhead associated with the transmission.